package sbcc.edu.blackjack;

/* An object of class card represents one of the 52 cards in a standard deck of playing cards.
Each card has a suit and a value. */
public class Card {
	public final static int	SPADES = 0,
							HEARTS = 1,
							DIAMONDS = 2,
							CLUBS = 3; // Codes for the 4 suits.
	
	public final static int ACE = 1,
							TWO = 2,
							THREE = 3,
							FOUR = 4,
							FIVE = 5,
							SIX = 6,
							SEVEN = 7,
							EIGHT = 8,
							NINE = 9,
							TEN = 10,
							JACK = 11,
							QUEEN = 12,
							KING = 13;

	private final int suit;  // The suit of this card, one of the constants  SPADES, HEARTS, DIAMONDS, CLUBS.
	private final int value; 	// The value of this card, from 1 to 11.

	public Card(int theValue, int theSuit) { 
		this.value = theValue;                       // Construct a card with the
		this.suit = theSuit;							// specified value and suit. 
												// Value must be between 1 and
												// 13. Suit must be between // 0
												// and 3. If the parameters are
												// outside these ranges,  
												// the constructed card object will
												// be invalid.

	}

	public int getSuit() { // Return the int that codes for this card's suit.
		return this.suit;
	}

	public int getValue() { // Return the int that codes for this card's value.
		return this.value;
	}

	public String getSuitAsString() { // Return a String representing the card's
										// suit. // (If the card's suit is
										// invalid, "??" is returned.)
		switch (suit) {
		case SPADES:
			return "Spades";
		case HEARTS:
			return "Hearts";
		case DIAMONDS:
			return "Diamonds";
		case CLUBS:
			return "Clubs";
		default:
			return "??";
		}
	}

	public String getValueAsString() { // Return a String representing the
										// card's value. If the card's value
										// is invalid, "??" is returned.
		switch (value) {
		case 1:
			return "Ace";
		case 2:
			return "2";
		case 3:
			return "3";
		case 4:
			return "4";
		case 5:
			return "5";
		case 6:
			return "6";
		case 7:
			return "7";
		case 8:
			return "8";
		case 9:
			return "9";
		case 10:
			return "10";
		case 11:
			return "Jack";
		case 12:
			return "Queen";
		case 13:
			return "King";
		default:
			return "??";
		}
	}

	public String toString() { // Return a String representation of this card,
								// such as // "10 of Hearts" or
								// "Queen of Spades".
		return getValueAsString() + " of " + getSuitAsString();
	}
}